from sqlalchemy import Column, Integer, String, DateTime, Boolean, Enum
from sqlalchemy.sql import func
from app.core.database import Base
import enum

# 用户角色枚举
class UserRole(enum.Enum):
    USER = "user"          # 普通用户
    ADMIN = "admin"        # 管理员

# 用户数据模型
# 在User类中添加以下关系
from sqlalchemy.orm import relationship

# 在User类中添加关联关系
class User(Base):
    # 数据库表名
    __tablename__ = "users"
    
    # 用户ID，主键，自增，索引
    id = Column(Integer, primary_key=True, index=True)
    # 用户名，唯一，索引，不可为空
    username = Column(String(50), unique=True, index=True, nullable=False)
    # 邮箱，唯一，索引，不可为空
    email = Column(String(100), unique=True, index=True, nullable=False)
    # 哈希后的密码，不可为空
    hashed_password = Column(String(255), nullable=False)
    # 用户角色，默认为普通用户
    role = Column(Enum(UserRole), default=UserRole.USER, nullable=False)
    # 用户是否激活，默认为True
    is_active = Column(Boolean, default=True)
    # 创建时间，自动设置为当前时间
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    # 更新时间，在更新时自动设置为当前时间
    updated_at = Column(DateTime(timezone=True), onupdate=func.now())
    
    # 添加新闻关联
    news = relationship("News", back_populates="author")
    
    # 添加AI工作流关联
    ai_workflows = relationship("AIWorkflow", back_populates="user")
    
    # 添加图片任务关联
    image_tasks = relationship("ImageTask", back_populates="user")
    
    # ... existing code ...